package com.merry.jcip;

import jdk.nashorn.internal.ir.annotations.Immutable;

import java.util.HashSet;
import java.util.Set;

/**
 * @author zouyb
 * 这就是一个不可变类。
 * set集合使用final修饰，让它本身的引用不能改变，但是里面的元素一样可以改变，但是这个类里面并没有提供这样的方法。
 * 同时 stooges 这个变量也没有出现逸出的情况。而且这个类使用final修饰，让别人无法对这个类进行继承，从而避免了子类将 stooges 变量给暴露出来
 * 所以这就是一个不可变类。
 */
@Immutable
public final class ThreeStooges {

    private final Set<String> stooges = new HashSet<String>();

    public ThreeStooges(){
        stooges.add("zs");
        stooges.add("ls");
        stooges.add("ww");
    }

    public boolean isStooges(String name){
        return stooges.contains(name);
    }

}
